package n2_common_methods;

import lombok.extern.slf4j.Slf4j;

import java.util.concurrent.locks.LockSupport;

import static utils.Sleeper.sleep;

/**
 *
 *
 * isInterrupted() ： 只是返回打断标记状态，不改变打断标记
 * interrupted()   ： 返回打断标记状态，重置为 false
 *
 */
@Slf4j(topic = "c.T8_park")
public class T8_interrupt_park {

    public static void main(String[] args) {
        Thread t1 = new Thread(() -> {
            log.debug("park...");
            LockSupport.park(); // 正常情况下 park() 后面的代码不会执行
            LockSupport.park();
            LockSupport.park();
            log.debug("unpark...1111111111111");
// >>>>>>>>>>>>>>>>>>>>>>>>HEAD
            log.debug("打断状态：{}", Thread.currentThread().isInterrupted());
// ------------------------
//          log.debug("打断状态：{},
//          interrupted()还重置状态为false, 将被后面的park() 阻止继续运行", Thread.interrupted());
// <<<<<<<<<<<<<<<<<<<<<<<<

            LockSupport.park();
            log.debug("unpark...222222222222");

        }, "t1");



        t1.start();

        sleep(5);

        // 一次可打断 多个park ， 让park() 后续代码继续执行， 除非使用interrupted()将打断标记重置false
        t1.interrupt();
    }

}
